学术休假-银行储蓄系统

本文介绍了一个银行储蓄系统的设计,包括开户、存款、取款、转账等功能。系统支持业务员登录,采用文件存储用户信息,并提供加密处理。系统采用动态数组或链表存储账户数据,且具备挂失、解挂、改密和销户等操作。未来计划提升代码质量和效率。
摘要由CSDN通过智能技术生成

银行储蓄系统包括:支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能。

登录
  输入业务员用户名和密码。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)
        
(1) 储户登记开户 这里需要管理员记录下储户的详细信息,包括身份证号和银行分配给储户的特定标志号。特定标志号是储户登陆用户端进行自助服务的口令。 (2) 定期存、取款 有定期存、取款需求的用户可以办理定期银行卡。管理员为用户分配的定期卡号都是以数字“6”开头,且需要记录下用户想定期存储的年限。 (3) 活期存、取款 我们设计的系统允许用户办理多张银行卡。办理了定期银行卡的用户可以继续办理活期银行卡。管理员为用户分配的活期卡号都是以数字“0”开头。 (4) 利息的计算 为了现利息的计算,我们增加一张利息表。它有三个属性,发生存取额的银行卡号,发生存取额的时间,发生存取额的大小。由于储户可是随时存、取款,所以必须对每一笔存取留下记录。主要是时间和资金发生额。若存款则记录资金大小,若取款则记录资金大小的相反数。当需要计算某张银行卡的利息时,就根据该卡的记录来计算。 (5) 转账 为了使系统的功能更加完善,我们新增了转账的功能。转账功能可以在活期卡和定期卡之间任意进行。 (6) 查询余额和修改密码 这两个功能是管理员和用户都具有的权限。只是管理员要查询储户余额必须在用户的授权下,而且管理员和用户修改的只能是自己使用的口令。 (7) 查询用户信息 查询用户信息是管理员拥有的权限。管理员查询用户信息可以通过两种方式。一是用户的卡号,二是银行分配给用户的特定标志号。 (8) 日志备份和数据恢复 我们设计的系统还粗略现了日志的备份和数据恢复功能。这也是管理员拥有的权限,管理员可以选择日志备份的路径,而在数据恢复时必须保证输入的恢复路径为日志备份的路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值