学术休假-银行储蓄系统
来源:互联网 发布:sql 每月销售量统计表 编辑:程序博客网 时间:2024/04/25 16:24
银行储蓄系统包括:支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能。
登录
输入业务员用户名和密码。3次输入不正确,强制退出程序。
基本要求
可以只设一名业务员,用全局变量表示其用户名和密码,写在程序中。
改进意见
可以用一个文本文件保存多名业务员的信息。定义结构体表示业务员,定义该种类型的结构体数据,在程序开始执行时,读入业务员信息,以支持多名业务员登录。
用文件保存密码时,一般不用“明文”,而要加密处理。
系统菜单
当业务员信息验证后,进入到系统主控菜单,由业务员为储户办理各种业务,直到按0后退出。
基本要求
每次启动系统,都是从0用户开始办理业务
改进意见
储户的信息都保存在文件中,在处理业务前需要将信息读入。
开户
账号由系统自动分配
确认密码和密码不同时要拒绝。
开户后,账号状态为0-正常
增加一个银行账户(银行卡)
银行账户如下定义:
struct Account
{
long accNumber;//卡号
string accName;//户主
string password;//密码
double balance;//余额
string identity;//身份证号
int state;//状态 0:正常 -1:挂失 2:销户
};
设全局变量Number,表示第一张卡号
long Number=10001;
在开户时,新增账户的卡号,即为Number,并更改该值,以使下一个账户获得连续值。
基本要求
设银行只支持2000个账户,用下面的数组存储用户的信息
Account array[2000];
改进意见
1、要求密码是6位数字字符,身份证号由18位数字字符构成,身份证号最后一位可以是x
2、用静态数组太浪费空间,改用动态数组
3、将用户信息改为链表,是更合适的做法
4、关闭程序前,将数据写入文件,银行的业务信息得以保存。开始运行程序时,再将文件中的数据读入。保存密码时,可以考虑加密。
5、新增账户的卡号,也可以保存在专门文件中。
销户
输入账号,确认后,将余额全部取完,并将状态state置为2-销户。
办理销户的账号,其状态必须为“0-正常”(下同)。
存款
输入账号、金额,记录存款后的余额。
取款
输入账号、金额,记录取款后的余额。
取款额不能超过余额。
查询
输入账号,显示账户信息。
转账
输入转出账号、金额、转入账户,记录转账后的余额。
账户必须存在,扣除转出账户的金额,要与转入账户增加的金额相同。
挂失
输入账号,将状态改变为 1-挂失
解挂
输入账号,将状态为 1-挂失 的账户状态改为 0-正常
改密
用新密码替代旧密码。
新密码必须与确认密码相同。
想法:
下午花费了大概3个小时完成了银行储蓄系统的大体,像密码显示为*、密码加密,使用动态数组或者是栈表这些高级的方式大多没有加入,以后的修改中将要加入。
程序中还是使用的大量的函数,仅函数就使用的10多个,函数的使用想必会使代码思路更加清晰,节省空间,本来计划这300多行代码就足够了,可是写下来才发现写了600多行,效率还是个大问题。
下面的一步是逐渐的去升级代码质量,能够更高效的运行。
源代码:beat1.0
/* *Copyright (c) 2015,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2015年1月28日 *版本号:v1.0*/#include<fstream>#include<iostream>#include<cstdlib>#include<string>using namespace std;bool Homepage(void);//主页显示void Meunpage(void);//显示菜单int Openfile(void);//打开银行数据文件int Opensaleman(void);//打开用户名文件void SaveDate(int);//保存数据int Checksaleman(string);//查找用户名int FindAcc(string);//查找账户bool Checksalemanpass(string,int);//检验用户名密码是否正确bool Check(string);//检验输入的密码是否正确void AddNumber(int);//开户void DelNumber(void);//销户void AddMoney();//存款void DelMoney(void);//取款void ShowInfo(void);//查询void TransferMoney(void);//转账void LossReport(void);//挂失void SolutionLinked(void);//解挂void ChangePass(void);//改密struct Account{ long accNumber;//卡号 string accName;//户主 string password;//密码 double balance;//余额 string identity;//身份证号 int state;//状态 0:正常 -1:挂失 2:销户};struct Saleman{ string name; string password;};Account array[2000];//账户数据Saleman sale[10];//业务员数据,最大允许10个业务员int main(){ int choice,num; if (Homepage()) { num=Openfile(); while (1) { system("cls"); Meunpage(); cout<<"请输入操作指令:"; cin>>choice; if (choice==0) break; else if (choice==1) { AddNumber(num); } else if (choice==2) { DelNumber(); SaveDate(num); } else if (choice==3) { AddMoney(); SaveDate(num); } else if (choice==4) { DelMoney(); SaveDate(num); } else if (choice==5) { ShowInfo(); SaveDate(num); } else if (choice==6) { TransferMoney(); SaveDate(num); } else if (choice==7) { LossReport(); SaveDate(num); } else if (choice==8) { SolutionLinked(); SaveDate(num); } else if (choice==9) { ChangePass(); SaveDate(num); } } } else exit(1);}int Openfile(void){ int sum=0; ifstream infile("BankDate.sav",ios::in); if (!infile) { cout<<"open error!"; exit(1); } while (infile>>array[sum].accNumber) { infile>>array[sum].accName; infile>>array[sum].password; infile>>array[sum].balance; infile>>array[sum].identity; infile>>array[sum].state; sum++; } infile.close(); //文件读取结束 return sum;}bool Homepage(void){ // return true; cout<<"+-----------------------+"<<endl; cout<<" 欢迎光临Mayuko银行"<<endl; cout<<"+-----------------------+"<<endl; string name,password; int wrong=0,i; cout<<"请输入业务员用户名:"; cin>>name; i=Checksaleman(name); while(1) { cout<<"请输入密码:"; cin>>password; if (i>=0) { if(Checksalemanpass(password,i)) { cout<<"欢迎进入!"<<endl; system("PAUSE"); return true; } else { cout<<"密码输入有误,请重新输入!"<<endl; wrong++; if (wrong>2) { cout<<"密码输入错误超过3次,即将退出系统。"; exit(1); } continue; } } else { cout<<"用户名不存在!"<<endl; return false; } }}int Opensaleman(void){ int sum=0; ifstream infile("BankSaleman.sav",ios::in); if (!infile) { cout<<"open error!"; exit(1); } while (infile>>sale[sum].name>>sale[sum].password) sum++; infile.close(); //文件读取结束 return sum;}void SaveDate(int sum){ ofstream outfile("BankDate.sav",ios::out); if (!outfile) { cout<<"open error!"; exit(1); } int i; for (i=0; i<sum; i++) { outfile<<array[i].accNumber<<" "<<array[i].accName<<" "<<array[i].password<<" "<<array[i].balance<<" "<<array[i].identity<<" "<<array[i].state<<endl; } outfile.close();}int Checksaleman(string name){ int i,sum; sum=Opensaleman(); for(i=0; i<sum; i++) { if (name==sale[i].name) return i; } return -1;}bool Checksalemanpass(string password,int n){ if (password==sale[n].password) return true; else return false;}void Meunpage(void){ cout<<"+--------------------------+"<<endl; cout<<"+ 1 开户 2 销户 3 存款 +"<<endl; cout<<"+ 4 取款 5 查询 6 转账 +"<<endl; cout<<"+ 7 挂失 8 解挂 9 改密 +"<<endl; cout<<"+ 0 退出 +"<<endl; cout<<"+--------------------------+"<<endl;}void AddNumber(int sum)//开户{ string pass1,pass2,name; double money; int i; long acc; i=sum; acc=10001+sum; while(1) { cout<<"正在开户"<<endl; cout<<"帐号:"<<acc<<endl; cout<<"户主姓名:"; cin>>name; cout<<"密码:"; cin>>pass1; cout<<"确认密码:"; cin>>pass2; cout<<"存入金额:"; cin>>money; cout<<"身份证号:"; cin>>array[i].identity; if (pass1==pass2) { array[i].accName=name; array[i].accNumber=acc; array[i].password=pass1; array[i].balance=money; array[i].state=0; ofstream outfile("BankDate.sav",ios::app); if (!outfile) { cout<<"open error!"; exit(1); } outfile<<array[i].accNumber<<" "<<array[i].accName<<" "<<array[i].password<<" "<<array[i].balance<<" "<<array[i].identity<<" "<<array[i].state<<endl; outfile.close(); cout<<"写入成功!"<<endl; system( "PAUSE "); //文件写入结束 break; } else { cout<<"两次密码输入有误,请重新输入。"<<endl; continue; } }}void DelNumber(void)//销户{ string pass; int i,acc,wrong=0; char in; cout<<"帐号:"; cin>>acc; i=acc-10001; cout<<"姓名:"; cout<<array[i].accName<<endl; while (1) { cout<<"密码:"; cin>>pass; if (pass==array[i].password) { cout<<"余额:"<<array[i].balance<<endl; cout<<"确认销户(Y/y)?"; cin>>in; if (array[i].state==0) { if (in=='Y' || in=='y') array[i].state=2; cout<<"取款"<<array[i].balance<<"元,销户成功!"<<endl; system("PAUSE"); break; } else cout<<"该账户已经销户或者被挂失!"<<endl; } else { wrong++; cout<<"密码输入有误,请重新输入!"<<endl; if (wrong>2) { cout<<"密码输入错误超过3次,即将退出系统。"<<endl; break; } continue; } }}void AddMoney(void)//存款{ int acc,i; double money; cout<<"存款"<<endl; cout<<"帐号:"; cin>>acc; i=acc-10001; if (array[i].state==0) { cout<<"姓名:"; cout<<array[i].accName<<endl; cout<<"存款额:"; cin>>money; array[i].balance+=money; cout<<"现金金额共计"<<array[i].balance<<"元,存款成功!"<<endl; system( "PAUSE "); } else cout<<"该账户挂失或者销户,存款失败!"<<endl;}void DelMoney(void)//取款{ int acc,i,wrong=0; double money; string pass; cout<<"取款"<<endl; cout<<"帐号:"; cin>>acc; i=acc-10001; if (array[i].state==0) { cout<<"姓名:"; cout<<array[i].accName<<endl; while(1) { cout<<"密码:"; cin>>pass; if (array[i].password==pass) { cout<<"取款额:"; cin>>money; if (array[i].balance>=money) { array[i].balance-=money; cout<<"现金金额剩余"<<array[i].balance<<"元,取款成功!"<<endl; system( "PAUSE "); break; } else { cout<<"余额不足,取款失败!"<<endl; system( "PAUSE "); break; } } else { wrong++; cout<<"密码输入有误,请重新输入!"<<endl; if (wrong>2) { cout<<"密码输入错误超过3次,即将退出系统。"<<endl; system( "PAUSE "); break; } else continue; } } } else { cout<<"该账户挂失或者销户,存款失败!"<<endl; }}void ShowInfo(void)//查询{ int acc,i,wrong=0; string pass; cout<<"帐号:"; cin>>acc; i=acc-10001; cout<<"姓名:"; cout<<array[i].accName<<endl; while(1) { cout<<"密码:"; cin>>pass; if (array[i].password==pass) { cout<<"余额:"<<array[i].balance<<endl; cout<<"当前状态:"; switch (array[i].state) { case 1: cout<<"挂失"<<endl; break; case 0: cout<<"正常"<<endl; break; case 2: cout<<"销户"<<endl; break; } cout<<"身份证号:"<<array[i].identity<<endl; cout<<"查询完毕!"<<endl; system( "PAUSE "); break; } else { wrong++; cout<<"密码输入有误,请重新输入!"<<endl; if (wrong>2) { cout<<"密码输入错误超过3次,即将退出系统。"<<endl; system( "PAUSE "); break; } else continue; } }}void TransferMoney(void)//转账{ int acc,i,wrong=0,j,acc2; double money; string pass; cout<<"转账"<<endl; cout<<"帐号:"; cin>>acc; i=acc-10001; if (array[i].state==0) { cout<<"姓名:"; cout<<array[i].accName<<endl; while(1) { cout<<"密码:"; cin>>pass; if (array[i].password==pass) { cout<<"转账额(账户余额剩余"<<array[i].balance<<"元):"; cin>>money; if (array[i].balance>=money) { cout<<"转入帐号:"; cin>>acc2; j=acc2-10001; array[i].balance-=money; array[j].balance+=money; cout<<"现金金额剩余"<<array[i].balance<<"元,转账成功!"<<endl; system( "PAUSE "); break; } else { cout<<"余额不足,转账失败!"<<endl; system( "PAUSE "); break; } } else { wrong++; cout<<"密码输入错误有误,请重新输入!"<<endl; if (wrong>2) { cout<<"密码输入超过3次,即将退出系统。"<<endl; system( "PAUSE "); break; } else continue; } } } else { cout<<"该账户挂失或者销户,转账失败!"<<endl; system( "PAUSE "); }}void LossReport(void)//挂失{ int acc,i,wrong=0,j,acc2; double money; string pass; cout<<"挂失"<<endl; cout<<"帐号:"; cin>>acc; i=acc-10001; while(1) { if (array[i].state==0) { cout<<"姓名:"; cout<<array[i].accName<<endl; cout<<"密码:"; cin>>pass; if (array[i].password==pass) { array[i].state=1; cout<<"挂失成功!"<<endl; system( "PAUSE "); break; } else { wrong++; cout<<"密码输入有误,请重新输入!"<<endl; if (wrong>2) { cout<<"密码输入错误超过3次,即将退出系统。"<<endl; system( "PAUSE "); break; } else continue; } } else { cout<<"该账户已经挂失或者销户,无需挂失!"<<endl; system( "PAUSE "); break; } }}void SolutionLinked(void)//解挂{ int acc,i,wrong=0,j,acc2; string pass; double money; cout<<"解挂"; cout<<"帐号:"; cin>>acc; i=acc-10001; while(1) { if (array[i].state==1) { cout<<"姓名:"; cout<<array[i].accName<<endl; cout<<"密码:"; cin>>pass; if (array[i].password==pass) { array[i].state=0; cout<<"解挂成功!"<<endl; system( "PAUSE "); break; } else { wrong++; cout<<"密码输入有误,请重新输入!"<<endl; if (wrong>2) { cout<<"密码输入错误超过3次,即将退出系统。"<<endl; system( "PAUSE "); break; } else continue; } } else { cout<<"该账户已经正常或者销户,无需解挂!"<<endl; system( "PAUSE "); break; } }}void ChangePass(void)//改密{ int acc,i,wrong=0,j,acc2; string pass,pass1,pass2; double money; cout<<"改密"<<endl;; cout<<"帐号:"; cin>>acc; i=acc-10001; while(1) { if (array[i].state==0) { cout<<"姓名:"; cout<<array[i].accName<<endl; cout<<"密码:"; cin>>pass; if (array[i].password==pass) { cout<<"新密码:"; cin>>pass1; cout<<"确认密码:"; cin>>pass2; if (pass1==pass2) { array[i].password=pass1; cout<<"修改成功!"<<endl; system( "PAUSE "); break; } else { cout<<"两次密码输入不一致,请重新输入。"<<endl; system( "PAUSE "); continue; } } else { wrong++; cout<<"密码输入有误,请重新输入!"<<endl; if (wrong>2) { cout<<"密码输入错误超过3次,即将退出系统。"<<endl; system( "PAUSE "); break; } else continue; } } else { cout<<"该账户挂失或者销户,改密失败!"<<endl; system( "PAUSE "); break; } }}运行截图:
当然,所有的信息保存在数据库中,这些数据库为:
银行主数据库:
业务员数据库:
@ Mayuko
- 学术休假-银行储蓄系统
- 学术休假之银行储蓄系统
- 学术休假期间作业——银行储蓄系统(基础版)
- 银行储蓄系统
- 银行储蓄系统
- 银行储蓄系统指导
- 银行储蓄系统...
- 银行储蓄系统
- 银行储蓄系统
- Odi银行储蓄系统
- 课程设计-银行储蓄系统
- 第一版 银行储蓄系统
- 银行储蓄系统
- 课程设计-银行储蓄系统
- 银行储蓄系统
- 银行储蓄系统
- 课程设计-银行储蓄系统。
- 课程设计--银行储蓄系统
- Android关于setHomeButtonEnabled与setDisplayHomeAsUpEnabled
- 安装deb文件出错时
- mysql查看表结构命令
- heartbeat之ipfail
- 走在iOS编程的路上
- 学术休假-银行储蓄系统
- HDOJ 1013 Digital Roots
- fisheye的安装和使用资料收集
- 【有诗云】姐姐,今夜我不关心人类,我只想家乡的雪
- 深入浅出的理解频谱泄露
- 二叉搜索树(二叉排序树)
- 使用JAXB eclipse插件根据XSD文件生成JAVA代码
- python元素移除问题
- linux ls命令