求大神帮我解释程序下这个5800程序正算

欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 1590 人关注过本帖
标题:求大神给我解释一下下面的程序,好多地方看不懂
来 自:广州
等 级:论坛游民
帖 子:47
专家分:63
结帖率:55.56%
&&已结贴√
&&问题点数:20&&回复次数:14&&&
求大神给我解释一下下面的程序,好多地方看不懂
#include &stdlib.h&
#include &string.h&
#include &conio.h&
#include &stdio.h&
#include &ctype.h&
#include &bank.h&
&&& char userName[9];
&&& char userPWD[7];
&&& welcome();
&&& for(i = 0; i & 3; i++)
&&&&&&&&printf(&\n&);
&&&&&&&&printf(&请输入您的用户名:&);
&&&&&&&&scanf(&%s&, userName);
&&&&&&&&fflush(stdin);
&&&&&&&&printf(&\n请输入您的密码:&);
&&&&&&&&scanf(&%s&,userPWD);
&&&&&&&&fflush(stdin);
&&&&&&&&if ((strcmp(userName,&admin&)==0) && (strcmp(userPWD,&admin&)==0))
&&&&&&&&&&&&//用户名和密码正确,显示主菜单
&&&&&&&&&&&&mainmenu();
&&&&&&&&else
&&&&&&&&&&&&if (i & 2)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& //用户名或密码错误,提示用户重新输入
&&&&&&&&&&&&&&& printf(&用户名或密码错误,请重新输入!&);
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& //连续三次输错用户名或密码,退出系统。
&&&&&&&&&&&&&&& printf(&用户名或密码错误,退出系统!&);
&&&&&&&&&&&&}
void welcome()
&&& printf(&+----------------------------+\n&);
&&& printf(&|&&&&&&&&&&&&&&&&&&&&&&&&&&& |\n&);
&&& printf(&|&&欢迎使用储蓄综合业务平台&&|\n&);
&&& printf(&|&&&&&&&&&&&&&&&&&&&&&&&&&&& |\n&);
&&& printf(&+----------------------------+\n&);
void mainmenu()
&&&&&&&&&/*我把int型改成了char型*/
&&& choice = -1;
&&&&&&&&printf(&\n&);
&&&&&&&&printf(&+-------------------------------+\n&);
&&&&&&&&printf(&|&&存款 请按1&&&&&& 开户 请按4&&|\n&);
&&&&&&&&printf(&|&&取款 请按2&&&&&& 销户 请按5&&|\n&);
&&&&&&&&printf(&|&&查询 请按3&&&&&& 退出 请按0&&|\n&);
&&&&&&&&printf(&+-------------------------------+\n&);
&&&&&&&&printf(&请输入您的选择:&);
&&&&&&&&scanf(&%s&, &choice);&&&&&& /*我把%d改成了%s*/
&&&&&&&&fflush(stdin);
&&&&&&&&switch(choice)
&&&&&&&&case '0':
&&&&&&&&&&&&exit(0);
&&&&&&&&case '1':
&&&&&&&&&&&&deposit();
&&&&&&&&&&&&
&&&&&&&&case '2':
&&&&&&&&&&&&withdraw();
&&&&&&&&&&&&
&&&&&&&&case '3':
&&&&&&&&&&&&query();
&&&&&&&&&&&&
&&&&&&&&case '4':
&&&&&&&&&&&&openAnAccount();
&&&&&&&&&&&&
&&&&&&&&case '5':
&&&&&&&&&&&&closeAnAcount();
&&&&&&&&&&&&
&&&&&&&&&&&&// case 6:
&&&&&&&&&&&&//&&queryall();
&&&&&&&&&&&&//&&
&&&&&&&&default:
&&&&&&&&&&&&printf(&\n无效选项!&);
&&&&&&&&&&&&
&&& }while(choice != 0);
void openAnAccount()
&&& int accN//账号
&&& char accName[9];//户名
&&& char accPWD[7];//密码
&&&//存入金额
&&& //初始化变量
&&& accNumber = 0;
&&& memset(accName, 0, sizeof(accName));
&&& memset(accPWD, 0, sizeof(accName));
&&& cash = 0;
&&& //判断是否已经超过最大用户数
&&& if (maxAccount&=(N_MAXREC_NO-2) )
&&&&&&&&//生成账号
&&&&&&&&accNumber = createAccNumber();
&&&&&&&&//获取账户名称
&&&&&&&&getaccName(accName);
&&&&&&&&//获取账户密码
&&&&&&&&getaccPWD(accPWD);
&&&&&&&&//获取存入金额
&&&&&&&&cash = getcash(0);
&&&&&&&&maxAccount++;
&&&&&&&&rs[maxAccount].accNumber = accN
&&&&&&&&strcpy(rs[maxAccount].accName,accName);
&&&&&&&&strcpy(rs[maxAccount].accPWD,accPWD);
&&&&&&&&rs[maxAccount].balance =
&&&&&&&&strcpy(rs[maxAccount].flag,&0&);
&&&&&&&&//显示账户信息
&&&&&&&&dispAnAccount(maxAccount);
&&&&&&&&printf(&开户成功!按任意键返回主菜单...&);
&&&&&&&&getch();
&&&&&&&&printf(&您一次性开户已经超过最大用户数!按任意键返回主菜单...&);
&&&&&&&&getch();
void dispAnAccount(int i)
&&& printf(&+-------------------------------------------------+\n&);
&&& printf(&| %-5s | %-8s | %-6s | %-12s | %4s |\n&,&账号&,&户名&,&密码&,&余额&,&状态&);
&&& printf(&+-------+----------+--------+--------------+------+\n&);
&&& printf(&| %5d | %-8s | %-6s | %-12.2f | %4s |\n&,rs[i].accNumber,rs[i].accName,rs[i].accPWD,rs[i].balance,atoi(rs[i].flag)?&销户&:&正常&);
&&& printf(&+-------------------------------------------------+\n&);
int createAccNumber()
&&& if(maxAccount == -1)
&&&&&&&&//账号从开始
&&&&&&&&return 10001;
&&&&&&&&//顺序产生账号
&&&&&&&&return rs[maxAccount].accNumber + 1;
void getaccName(char accName[])
&&& char caccName[100];//户名
&&& int i = 1;
&&& while(i)
&&&&&&&&memset(caccName, 0, sizeof(caccName));
&&&&&&&&printf(&\n&);
&&&&&&&&printf(&请输入储户户名:&);
&&&&&&&&scanf(&%s&, caccName);
&&&&&&&&fflush(stdin);
&&&&&&&&if(checkInput(0,caccName))
&&&&&&&&&&&&printf(&超过位的最大户名长度!\n&);
&&&&&&&&&&&&
&&&&&&&&i = 0;
&&& memcpy(accName, caccName, 9);
void getaccPWD(char accPWD[])
&&& char caccPWD[100];//密码
&&& int i = 1;
&&& while(i)
&&&&&&&&memset(caccPWD, 0, sizeof(caccPWD));
&&&&&&&&printf(&\n&);
&&&&&&&&printf(&请输入储户密码:&);
&&&&&&&&scanf(&%s&, caccPWD);
&&&&&&&&fflush(stdin);
&&&&&&&&if(checkInput(1,caccPWD))
&&&&&&&&&&&&printf(&超过位的最大密码长度!\n&);
&&&&&&&&&&&&
&&&&&&&&i = 0;
&&& memcpy(accPWD, caccPWD, 7);
double getcash(int flag)
&&& char ccash[100];//金额
&&& int i = 1;
&&& while(i)
&&&&&&&&memset(ccash, 0, sizeof(ccash));
&&&&&&&&dcash = 0;
&&&&&&&&printf(&\n&);
&&&&&&&&switch(flag)
&&&&&&&&case 0: printf(&请输入存入金额:&);
&&&&&&&&case 1: printf(&请输入取款金额:&);
&&&&&&&&scanf(&%lf&,&dcash);&&&&&//不是1f而是
&&&&&&&&fflush(stdin);
&&&&&&&&sprintf(ccash,&%12.2f&,dcash);
&&&&&&&&if(checkInput(2,ccash))
&&&&&&&&&&&&printf(&录入的金额超过位的最大存入(取出)金额长度!\n&);
&&&&&&&&&&&&
&&&&&&&&i = 0;
int checkInput (int flag, char *checkStr)
&&& switch(flag)
&&&&&&&&//检查户名是否超过最大长度
&&& case 0:
&&&&&&&&&&&&if(strlen(checkStr) & 8)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& return 1;
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&//检查密码是否超过最大长度
&&& case 1:
&&&&&&&&&&&&if(strlen(checkStr) & 6)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& return 1;
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&//检查存入金额是否超过最大长度
&&& case 2:
&&&&&&&&&&&&if(strlen(checkStr) & 12)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& return 1;
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&& default:
&&&&&&&&return 0;
&&& return 0;
void deposit()
&&& int accN//帐号
&&& int accountP//账户在数组中的位置(下标)
&&&//存入金额
&&& //初始化
&&& accNumber = 0;
&&& accountPosition = -1;//-1,表示未找到
&&& cash = 0;
&&& //获取存款帐号
&&& accNumber = getaccNumber(0);
&&& //查找该账户
&&& accountPosition = findAnAccount(accNumber);
&&& if (accountPosition== -1)
&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&getch();
&&& //显示帐户信息
&&& dispAnAccount(accountPosition);
&&& //以销户帐户,不能进行存款操作
&&& if (strcmp(rs[accountPosition].flag,&0&) !=0)
&&&&&&&&printf(&该帐户已经销户,不能存款!按任意键返回...&);
&&&&&&&&getch();
&&& //获取存入金额
&&& cash = getcash(0);
&&& //存款金额不能为0或负数
&&& if (cash&=0)
&&&&&&&&printf(&存款金额不能为负数!按任意键返回...&);
&&&&&&&&getch();
&&& rs[accountPosition].balance = rs[accountPosition].balance +
&&& //显示帐户信息
&&& dispAnAccount(accountPosition);
&&& printf(&存款成功!按任意键返回...&);
&&& getch();
int getaccNumber( int flag)
&&& int iaccN//帐号
&&& iaccNumber= 0;
&&& printf(&\n&);
&&& switch(flag)
&&& case 0 : printf (&请输入要存款的帐号:&);
&&& case 1 : printf (&请输入要取款的帐号:&);
&&& case 2 : printf (&请输入要销户的帐号:&);
&&& case 3 : printf (&请输入要查询的帐号:&);
&&& scanf(&%d&,&iaccNumber);
&&& fflush(stdin);
&&& return iaccN
int findAnAccount(int accNumber)
&&& int accountP//帐户在数组中的位置
&&&//循环控制变量
&&& //初始位置是-1,表示未找到
&&& accountPosition = -1;
&&& //查找帐户的位置
&&& if (accNumber&=rs[maxAccount].accNumber && accNumber&=10001)/*老师加分*/
&&&&&&&&for (i=0;i&=maxAi++)
&&&&&&&&&&&&if(rs[i].accNumber == accNumber)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& accountPosition =
&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&& return accountP
void withdraw()
&&& char accPWD[7];//密码
&&& int accN//帐号
&&& int accountP//账户在数组中的位置(下标)
&&&//取款金额
&&& //初始化
&&& accNumber = 0;
&&& accountPosition = -1;//-1,表示未找到
&&& cash = 0;
&&& //获取取款帐号
&&& accNumber = getaccNumber(1);
&&& //查找该账户
&&& accountPosition = findAnAccount(accNumber);
&&& if (accountPosition== -1)
&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&getch();
&&& //显示帐户信息
&&& dispAnAccount(accountPosition);
&&& //以销户帐户,不能进行取款操作
&&& if (strcmp(rs[accountPosition].flag,&0&) !=0)
&&&&&&&&printf(&该帐户已经销户,不能取款!,按任意键返回...&);
&&&&&&&&getch();
&&& //获取要查询的帐户密码
&&& getaccPWD(accPWD);
&&& //密码不正确
&&& if (strcmp(rs[accountPosition].accPWD,accPWD) != 0)
&&&&&&&&printf(&\n密码不正确,按任意键返回...&);
&&&&&&&&getch();
&&& //获取取款金额
&&& cash = getcash(1);
&&& //取款金额不能为0或负数
&&& if (cash&=0)
&&&&&&&&printf(&存款金额不能为负数!按任意键返回...&);
&&&&&&&&getch();
&&& //取款是否超出存款金额
&&& if ((rs[accountPosition].balance - cash)&0)
&&&&&&&&printf(&您的取款金额已超过存款金额,不能取款!,按任意键返回...&);
&&&&&&&&getch();
&&& rs[accountPosition].balance = rs[accountPosition].balance -
&&& //显示帐户信息
&&& dispAnAccount(accountPosition);
&&& printf(&取款成功!按任意键返回...&);
&&& getch();
void query()
&&& int accN//帐号
&&& char accPWD[7];//密码
&&& int accountP//帐户在数组中的位置
&&& //初始位置是-1,表示未找到
&&& accountPosition = -1;
&&& accNumber = 0;
&&& memset(accPWD,0,sizeof(accPWD));
&&& //获取要查询的帐号
&&& accNumber = getaccNumber(3);
&&& //获取要查询的帐户密码
&&& getaccPWD(accPWD);
&&& //查找该帐户
&&& accountPosition = findAnAccount(accNumber);
&&& if (accountPosition== -1)
&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&getch();
&&& //显示帐户信息
&&& dispAnAccount(accountPosition);
&&& //密码不正确
&&& if (strcmp(rs[accountPosition].accPWD,accPWD) != 0)
&&&&&&&&printf(&\n密码不正确,按任意键返回...&);
&&&&&&&&getch();
&&& //已销户帐户
&&& if (strcmp(rs[accountPosition].flag,&0&) != 0)
&&&&&&&&printf(&\n该账户已经销户!按任意键返回...&);
&&&&&&&&getch();
&&& printf(&\n查询成功!按任意键返回...&);
&&& getch();
void closeAnAcount()
&&& int accN//账号
&&& char accPWD[7];//密码
&&& char userA//用户的回答
&&& int accountP//账户在数组中的位置
&&& //初始化
&&& accountPosition = -1;//-1,表示未找到
&&& accNumber = 0;
&&& memset (accPWD,0,sizeof(accPWD));
&&& //获取要销户的账号
&&& accNumber = getaccNumber(2);
&&& //获取要销户的账户密码
&&& getaccPWD(accPWD);
&&& //查找该账户
&&& accountPosition = findAnAccount(accNumber);
&&& if (accountPosition == -1)
&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&getch();
&&& //显示账户信息
&&& dispAnAccount(accountPosition);
&&& //密码不正确
&&& if (strcmp(rs[accountPosition].accPWD,accPWD) != 0)
&&&&&&&&printf(&\n密码不正确,按任意键返回...&);
&&&&&&&&getch();
&&& //销户已销户
&&& if (strcmp(rs[accountPosition].flag,&0&) != 0)
&&&&&&&&//已销户账户,不能再次销户
&&&&&&&&printf(&\n该账户已经销户,不能再次销户,按任意键返回...&);
&&&&&&&&getch();
&&& printf(&确认将账户%d销户吗?【1:销户|其他:不销户】&,rs[accountPosition].accNumber);
&&& scanf(&%c&,&userAnswer);
&&& fflush(stdin);
&&& if (userAnswer == '1')
&&&&&&&&strcpy(rs[accountPosition].flag, &1&);
&&&&&&&&rs[accountPosition].balance = 0;
&&&&&&&&dispAnAccount(accountPosition);
&&&&&&&&printf(&销户成功!按任意键返回...&);
&&&&&&&&getch();
&&& printf(&用户取消销户!按任意键返回...&);
&&& getch();
下面的是bank.h的内容
//显示欢迎信息
void welcome();
//系统主菜单
void mainmenu();
void openAnAccount();
void closeAnAcount();
void deposit();
void withdraw();
void query();
//查找一个账户在数组中的位置
int findAnAccount(int accNumber);
//显示一个账户的信息
void dispAnAccount(int i);
//生成账号
int createAccNumber();
//把数据从文件中读到结构体数组中
int readDate();
//把结构体数组中的数据写入文件
int writeDate();
//检查录入的户名.密码.存入金额格式是否合法。返回值: 0: 合法.1: 非法。
//flag: 0: 户名. 1:密码. 2:存入金额。checkstr: 需要检查的项目。
int checkInput(int flag, char *checkStr);
//去除右空格
char *rightTrim(char *str);
//显示所有账户
void queryall();
//得到键盘录入的户名
void getaccName(char accName[]);
//得到键盘录入的密码
void getaccPWD(char accPWD[]);
//得到键盘录入的金额
double getcash(int flag);/*课本上没有*/
//得到键盘录入的账号
int getaccNumber(int flag);
#define N_MAXREC_NO 100//文件最大行数
#define MAXLINE 256//行最大长度
//数据文件记录结构
struct record
&&& int accN//账号
&&& char accName[9];//户名
&&& char accPWD[7];//密码
&&& char flag[2];//销户标志
//自定义数据类型
typedef struct record RECORD;
//结构体数组
RECORD rs[N_MAXREC_NO];
//最后一个账户在结构体中的位置
int maxAccount = -1;/*课本上没有*/
搜索更多相关主题的帖子:
来 自:广州
等 级:论坛游民
帖 子:47
专家分:63
int createAccNumber()
&&&&&if(maxAccount == -1)
&&&&&&&&&//账号从开始
&&&&&&&&&return 10001;
&&&&&&&&&//顺序产生账号
&&&&&&&&&return rs[maxAccount].accNumber + 1;
&}这个开户账号谁可以解释一下
我是小白。。。。
来 自:湖南
等 级:黑侠
帖 子:243
专家分:635
这么长的代码能不能选择代码格式贴出来,贴得好看一点
程序代码:
程序代码:
人有多懒,编程就有多难。
来 自:广州
等 级:论坛游民
帖 子:47
专家分:63
我是小白。。。。
来 自:广州
等 级:论坛游民
帖 子:47
专家分:63
程序代码:#include &stdlib.h&
&#include &string.h&
&#include &conio.h&
&#include &stdio.h&
&#include &ctype.h&
#include &bank.h&
&&&&&char userName[<font color=#];
&&&&&char userPWD[<font color=#];
&&&&&welcome();
&&&&&for(i = <font color=#; i & <font color=#; i++)
&&&&&&&&&printf(&\n&);
&&&&&&&&&printf(&请输入您的用户名:&);
&&&&&&&&&scanf(&%s&, userName);
&&&&&&&&&fflush(stdin);
&&&&&&&&&printf(&\n请输入您的密码:&);
&&&&&&&&&scanf(&%s&,userPWD);
&&&&&&&&&fflush(stdin);
&&&&&&&&&if ((strcmp(userName,&admin&)==<font color=#) && (strcmp(userPWD,&admin&)==<font color=#))
&&&&&&&&&{
&&&&&&&&&&&& //用户名和密码正确,显示主菜单
&&&&&&&&&&&& mainmenu();
&&&&&&&&&}
&&&&&&&&&else
&&&&&&&&&{
&&&&&&&&&&&& if (i & <font color=#)
&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&//用户名或密码错误,提示用户重新输入
&&&&&&&&&&&&&&&&&printf(&用户名或密码错误,请重新输入!&);
&&&&&&&&&&&& }
&&&&&&&&&&&& else
&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&//连续三次输错用户名或密码,退出系统。
&&&&&&&&&&&&&&&&&printf(&用户名或密码错误,退出系统!&);
&&&&&&&&&&&& }
&&&&&&&&&}
&void welcome()
&&&&&printf(&+----------------------------+\n&);
&&&&&printf(&|&&&&&&&&&&&&&&&&&&&&&&&&&&& |\n&);
&&&&&printf(&|&&欢迎使用储蓄综合业务平台&&|\n&);
&&&&&printf(&|&&&&&&&&&&&&&&&&&&&&&&&&&&& |\n&);
&&&&&printf(&+----------------------------+\n&);
&void mainmenu()
&&&&&char&&&&&&/*我把int型改成了char型*/
&&&&&choice = -<font color=#;
&&&&&&&&&printf(&\n&);
&&&&&&&&&printf(&+-------------------------------+\n&);
&&&&&&&&&printf(&|&&存款 请按1&&&&&& 开户 请按4&&|\n&);
&&&&&&&&&printf(&|&&取款 请按2&&&&&& 销户 请按5&&|\n&);
&&&&&&&&&printf(&|&&查询 请按3&&&&&& 退出 请按0&&|\n&);
&&&&&&&&&printf(&+-------------------------------+\n&);
&&&&&&&&&printf(&请输入您的选择:&);
&&&&&&&&&scanf(&%s&, &choice);&&&&&& /*我把%d改成了%s*/
&&&&&&&&&fflush(stdin);
&&&&&&&&&switch(choice)
&&&&&&&&&{
&&&&&&&&&case '<font color=#':
&&&&&&&&&&&& exit(<font color=#);
&&&&&&&&&case '<font color=#':
&&&&&&&&&&&& deposit();
&&&&&&&&&&&& break;
&&&&&&&&&case '<font color=#':
&&&&&&&&&&&& withdraw();
&&&&&&&&&&&& break;
&&&&&&&&&case '<font color=#':
&&&&&&&&&&&& query();
&&&&&&&&&&&& break;
&&&&&&&&&case '<font color=#':
&&&&&&&&&&&& openAnAccount();
&&&&&&&&&&&& break;
&&&&&&&&&case '<font color=#':
&&&&&&&&&&&& closeAnAcount();
&&&&&&&&&&&& break;
&&&&&&&&&&&& // case 6:
&&&&&&&&&&&& //&&queryall();
&&&&&&&&&&&& //&&
&&&&&&&&&default:
&&&&&&&&&&&& printf(&\n无效选项!&);
&&&&&&&&&&&& break;
&&&&&&&&&}
&&&&&}while(choice != <font color=#);
&void openAnAccount()
&&&&&int accN//账号
&&&&&char accName[<font color=#];//户名
&&&&&char accPWD[<font color=#];//密码
&&&&&double//存入金额
&&& //初始化变量
&&&&&accNumber = <font color=#;
&&&&&memset(accName, <font color=#, sizeof(accName));
&&&&&memset(accPWD, <font color=#, sizeof(accName));
&&&&&cash = <font color=#;
&&& //判断是否已经超过最大用户数
&&&&&if (maxAccount&=(N_MAXREC_NO-<font color=#) )
&&&&&&&&&//生成账号
&&&&&&&&&accNumber = createAccNumber();
&&&&&&&&&//获取账户名称
&&&&&&&&&getaccName(accName);
&&&&&&&&&//获取账户密码
&&&&&&&&&getaccPWD(accPWD);
&&&&&&&&&//获取存入金额
&&&&&&&&&cash = getcash(<font color=#);
&&&&&&&&&maxAccount++;
&&&&&&&&&rs[maxAccount].accNumber = accN
&&&&&&&&&strcpy(rs[maxAccount].accName,accName);
&&&&&&&&&strcpy(rs[maxAccount].accPWD,accPWD);
&&&&&&&&&rs[maxAccount].balance =
&&&&&&&&&strcpy(rs[maxAccount].flag,&<font color=#&);
&&&&&&&&&//显示账户信息
&&&&&&&&&dispAnAccount(maxAccount);
&&&&&&&&&printf(&开户成功!按任意键返回主菜单...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&&&&&&&&printf(&您一次性开户已经超过最大用户数!按任意键返回主菜单...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&void dispAnAccount(int i)
&&&&&printf(&+-------------------------------------------------+\n&);
&&&&&printf(&| %-5s | %-8s | %-6s | %-12s | %4s |\n&,&账号&,&户名&,&密码&,&余额&,&状态&);
&&&&&printf(&+-------+----------+--------+--------------+------+\n&);
&&&&&printf(&| %5d | %-8s | %-6s | %-12.2f | %4s |\n&,rs[i].accNumber,rs[i].accName,rs[i].accPWD,rs[i].balance,atoi(rs[i].flag)?&销户&:&正常&);
&&&&&printf(&+-------------------------------------------------+\n&);
&int createAccNumber()
&&&&&if(maxAccount == -<font color=#)
&&&&&&&&&//账号从开始
&&&&&&&&&return <font color=#01;
&&&&&&&&&//顺序产生账号
&&&&&&&&&return rs[maxAccount].accNumber + <font color=#;
&void getaccName(char accName[])
&&&&&char caccName[<font color=#];//户名
&&&&&int i = <font color=#;
&&& while(i)
&&&&&&&&&memset(caccName, <font color=#, sizeof(caccName));
&&&&&&&&&printf(&\n&);
&&&&&&&&&printf(&请输入储户户名:&);
&&&&&&&&&scanf(&%s&, caccName);
&&&&&&&&&fflush(stdin);
&&&&&&&&&if(checkInput(<font color=#,caccName))
&&&&&&&&&{
&&&&&&&&&&&& printf(&超过位的最大户名长度!\n&);
&&&&&&&&&&&& continue;
&&&&&&&&&}
&&&&&&&&&i = <font color=#;
&&&&&memcpy(accName, caccName, <font color=#);
&void getaccPWD(char accPWD[])
&&&&&char caccPWD[<font color=#];//密码
&&&&&int i = <font color=#;
&&& while(i)
&&&&&&&&&memset(caccPWD, <font color=#, sizeof(caccPWD));
&&&&&&&&&printf(&\n&);
&&&&&&&&&printf(&请输入储户密码:&);
&&&&&&&&&scanf(&%s&, caccPWD);
&&&&&&&&&fflush(stdin);
&&&&&&&&&if(checkInput(<font color=#,caccPWD))
&&&&&&&&&{
&&&&&&&&&&&& printf(&超过位的最大密码长度!\n&);
&&&&&&&&&&&& continue;
&&&&&&&&&}
&&&&&&&&&i = <font color=#;
&&&&&memcpy(accPWD, caccPWD, <font color=#);
double getcash(int flag)
&&&&&char ccash[<font color=#];//金额
&&&&&double//金额
&&&&&int i = <font color=#;
&&& while(i)
&&&&&&&&&memset(ccash, <font color=#, sizeof(ccash));
&&&&&&&&&dcash = <font color=#;
&&&&&&&&&printf(&\n&);
&&&&&&&&&switch(flag)
&&&&&&&&&{
&&&&&&&&&case <font color=#: printf(&请输入存入金额:&);break;
&&&&&&&&&case <font color=#: printf(&请输入取款金额:&);break;
&&&&&&&&&}
&&&&&&&&&scanf(&%lf&,&dcash);&&&&&//不是1f而是
&&&&&&&&&fflush(stdin);
&&&&&&&&&sprintf(ccash,&<font color=#.2f&,dcash);
&&&&&&&&&if(checkInput(<font color=#,ccash))
&&&&&&&&&{
&&&&&&&&&&&& printf(&录入的金额超过位的最大存入(取出)金额长度!\n&);
&&&&&&&&&&&& continue;
&&&&&&&&&}
&&&&&&&&&i = <font color=#;
&&&&&return
&int checkInput (int flag, char *checkStr)
&&&&&switch(flag)
&&&&&&&&&//检查户名是否超过最大长度
&&&&&case <font color=#:
&&&&&&&&&{
&&&&&&&&&&&& if(strlen(checkStr) & <font color=#)
&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&return <font color=#;
&&&&&&&&&&&& }
&&&&&&&&&&&& break;
&&&&&&&&&}
&&&&&&&&&//检查密码是否超过最大长度
&&&&&case <font color=#:
&&&&&&&&&{
&&&&&&&&&&&& if(strlen(checkStr) & <font color=#)
&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&return <font color=#;
&&&&&&&&&&&& }
&&&&&&&&&&&& break;
&&&&&&&&&}
&&&&&&&&&//检查存入金额是否超过最大长度
&&&&&case <font color=#:
&&&&&&&&&{
&&&&&&&&&&&& if(strlen(checkStr) & <font color=#)
&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&return <font color=#;
&&&&&&&&&&&& }
&&&&&&&&&&&& break;
&&&&&&&&&}
&&&&&default:
&&&&&&&&&return <font color=#;
&&&&&return <font color=#;
&void deposit()
&&&&&int accN//帐号
&&&&&int accountP//账户在数组中的位置(下标)
&&&&&double//存入金额
&&& //初始化
&&&&&accNumber = <font color=#;
&&&&&accountPosition = -<font color=#;//<font color=#,表示未找到
&&&&&cash = <font color=#;
&&& //获取存款帐号
&&&&&accNumber = getaccNumber(<font color=#);
&&& //查找该账户
&&&&&accountPosition = findAnAccount(accNumber);
&&& if (accountPosition== -<font color=#)
&&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&&&&//显示帐户信息
&&&&&dispAnAccount(accountPosition);
&&& //以销户帐户,不能进行存款操作
&&&&&if (strcmp(rs[accountPosition].flag,&<font color=#&) !=<font color=#)
&&&&&&&&&printf(&该帐户已经销户,不能存款!按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //获取存入金额
&&&&&cash = getcash(<font color=#);
&&& //存款金额不能为0或负数
&&&&&if (cash&=<font color=#)
&&&&&&&&&printf(&存款金额不能为负数!按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& rs[accountPosition].balance = rs[accountPosition].balance +
&&& //显示帐户信息
&&&&&dispAnAccount(accountPosition);
&&&&&printf(&存款成功!按任意键返回...&);
&&&&&getch();
int getaccNumber( int flag)
&&&&&int iaccN//帐号
&&& iaccNumber= <font color=#;
&&&&&printf(&\n&);
&&&&&switch(flag)
&&&&&case <font color=# : printf (&请输入要存款的帐号:&); break;
&&&&&case <font color=# : printf (&请输入要取款的帐号:&); break;
&&&&&case <font color=# : printf (&请输入要销户的帐号:&); break;
&&&&&case <font color=# : printf (&请输入要查询的帐号:&); break;
&&&&&scanf(&%d&,&iaccNumber);
&&&&&fflush(stdin);
&&& return iaccN
int findAnAccount(int accNumber)
&&&&&int accountP//帐户在数组中的位置
&&&&&int//循环控制变量
&&& //初始位置是-1,表示未找到
&&&&&accountPosition = -<font color=#;
&&& //查找帐户的位置
&&&&&if (accNumber&=rs[maxAccount].accNumber && accNumber&=<font color=#01)/*老师加分*/
&&&&&&&&&for (i=<font color=#;i&=maxAi++)
&&&&&&&&&{
&&&&&&&&&&&& if(rs[i].accNumber == accNumber)
&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&accountPosition =
&&&&&&&&&&&&&&&&&break;
&&&&&&&&&&&& }
&&&&&&&&&}
&&& return accountP
void withdraw()
&&&&&char accPWD[<font color=#];//密码
&&&&&int accN//帐号
&&&&&int accountP//账户在数组中的位置(下标)
&&&&&double//取款金额
&&& //初始化
&&&&&accNumber = <font color=#;
&&&&&accountPosition = -<font color=#;//<font color=#,表示未找到
&&&&&cash = <font color=#;
&&& //获取取款帐号
&&&&&accNumber = getaccNumber(<font color=#);
&&& //查找该账户
&&&&&accountPosition = findAnAccount(accNumber);
&&& if (accountPosition== -<font color=#)
&&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&&&&//显示帐户信息
&&&&&dispAnAccount(accountPosition);
&&& //以销户帐户,不能进行取款操作
&&&&&if (strcmp(rs[accountPosition].flag,&<font color=#&) !=<font color=#)
&&&&&&&&&printf(&该帐户已经销户,不能取款!,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //获取要查询的帐户密码
&&&&&getaccPWD(accPWD);
&&& //密码不正确
&&&&&if (strcmp(rs[accountPosition].accPWD,accPWD) != <font color=#)
&&&&&&&&&printf(&\n密码不正确,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //获取取款金额
&&&&&cash = getcash(<font color=#);
&&& //取款金额不能为0或负数
&&&&&if (cash&=<font color=#)
&&&&&&&&&printf(&存款金额不能为负数!按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //取款是否超出存款金额
&&&&&if ((rs[accountPosition].balance - cash)&<font color=#)
&&&&&&&&&printf(&您的取款金额已超过存款金额,不能取款!,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& rs[accountPosition].balance = rs[accountPosition].balance -
&&& //显示帐户信息
&&&&&dispAnAccount(accountPosition);
&&&&&printf(&取款成功!按任意键返回...&);
&&&&&getch();
void query()
&&& int accN//帐号
&&&&&char accPWD[<font color=#];//密码
&&&&&int accountP//帐户在数组中的位置
&&& //初始位置是-1,表示未找到
&&&&&accountPosition = -<font color=#;
&&&&&accNumber = <font color=#;
&&&&&memset(accPWD,<font color=#,sizeof(accPWD));
&&& //获取要查询的帐号
&&&&&accNumber = getaccNumber(<font color=#);
&&& //获取要查询的帐户密码
&&&&&getaccPWD(accPWD);
&&& //查找该帐户
&&&&&accountPosition = findAnAccount(accNumber);
&&& if (accountPosition== -<font color=#)
&&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //显示帐户信息
&&&&&dispAnAccount(accountPosition);
&&& //密码不正确
&&&&&if (strcmp(rs[accountPosition].accPWD,accPWD) != <font color=#)
&&&&&&&&&printf(&\n密码不正确,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //已销户帐户
&&&&&if (strcmp(rs[accountPosition].flag,&<font color=#&) != <font color=#)
&&&&&&&&&printf(&\n该账户已经销户!按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& printf(&\n查询成功!按任意键返回...&);
&&&&&getch();
&&&&&return;
void closeAnAcount()
&&&&&int accN//账号
&&&&&char accPWD[<font color=#];//密码
&&&&&char userA//用户的回答
&&&&&int accountP//账户在数组中的位置
&&& //初始化
&&&&&accountPosition = -<font color=#;//<font color=#,表示未找到
&&&&&accNumber = <font color=#;
&&&&&memset (accPWD,<font color=#,sizeof(accPWD));
&&& //获取要销户的账号
&&&&&accNumber = getaccNumber(<font color=#);
&&& //获取要销户的账户密码
&&&&&getaccPWD(accPWD);
&&& //查找该账户
&&&&&accountPosition = findAnAccount(accNumber);
&&& if (accountPosition == -<font color=#)
&&&&&&&&&printf(&查无此帐户,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //显示账户信息
&&&&&dispAnAccount(accountPosition);
&&& //密码不正确
&&&&&if (strcmp(rs[accountPosition].accPWD,accPWD) != <font color=#)
&&&&&&&&&printf(&\n密码不正确,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& //销户已销户
&&&&&if (strcmp(rs[accountPosition].flag,&<font color=#&) != <font color=#)
&&&&&&&&&//已销户账户,不能再次销户
&&&&&&&&&printf(&\n该账户已经销户,不能再次销户,按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&& printf(&确认将账户%d销户吗?【1:销户|其他:不销户】&,rs[accountPosition].accNumber);
&&&&&scanf(&%c&,&userAnswer);
&&&&&fflush(stdin);
&&& if (userAnswer == '<font color=#')
&&&&&&&&&strcpy(rs[accountPosition].flag, &<font color=#&);
&&&&&&&&&rs[accountPosition].balance = <font color=#;
&&&&&&&&&dispAnAccount(accountPosition);
&&&&&&&&&printf(&销户成功!按任意键返回...&);
&&&&&&&&&getch();
&&&&&&&&&return;
&&&&&printf(&用户取消销户!按任意键返回...&);
&&&&&getch();
&&&&&return;
我是小白。。。。
来 自:广州
等 级:论坛游民
帖 子:47
专家分:63
程序代码:int createAccNumber()
&&&&&&if(maxAccount == -<font color=#)
&&&&&&&&& //账号从开始
&&&&&&&&& return <font color=#01;
&&&&&&else
&&&&&&&&& //顺序产生账号
&&&&&&&&& return rs[maxAccount].accNumber + <font color=#;
我看不懂这个子函数中的if语句,可以解释一下吗?
我是小白。。。。
来 自:湖南
等 级:贵宾
威 望:67
帖 子:1354
专家分:5721
&&得分:20&
程序代码:int createAccNumber()
&&&&&&if(maxAccount == -<font color=#)&&//maxAccount为用户人数-1,未作为形参应该是全局变量
&&&&&&&&& //账号从开始&&& //用户-1为-1则无用户,新建账号,这个if语句只在无用户情况执行
&&&&&&&&& return <font color=#01;
&&&&&&else
&&&&&&&&& //顺序产生账号
&&&&&&&&& return rs[maxAccount].accNumber + <font color=#;
来 自:广州
等 级:论坛游民
帖 子:47
专家分:63
版主就是给力,我还想问一下rs[maxAccount].accNumber 是什么意思?
我是小白。。。。
来 自:广州
等 级:论坛游民
帖 子:47
专家分:63
可是maxAccount前面都没有赋值,怎么会等于-1呢?那前面的if不是一定不成立的吗?
我是小白。。。。
来 自:湖南
等 级:贵宾
威 望:67
帖 子:1354
专家分:5721
rs[maxAccount].accNumber
看样子是结构定义的形式
rs为结构体数组
结构部分应该在文件&bank.h&里面
可是maxAccount前面都没有赋值,怎么会等于-1呢?那前面的if不是一定不成立的吗?
这个问题对照程序分析吧,不过逻辑就是这样,初始情况账户个数为0但数组下标是从0开始
所以写0就表示有一个账户,因而写-1
版权所有,并保留所有权利。
Powered by , Processed in 0.113017 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 解释程序 的文章

 

随机推荐