学术休假-银行储蓄系统

来源:互联网 发布: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

3 0
原创粉丝点击