银行管理系统[C++]
//项目:银行管理系统
//系统实现的主要有管理,取款机管理,用户查询等功能:
//*管理模块:存款、取款、开户、销户、修改信息、办卡、挂失卡;
//*用户查询模块;
//*取款机信息管理模块:管理员管理查询和维护、客户查询和取款等功能;
//可以考虑利率
//
// main.cpp
// 银行管理系统
//
// Created by 丁小未 on 13-7-23.
// Copyright (c) 2013年 dingxiaowei. All rights reserved.
//
//项目:银行管理系统
//系统实现的主要有管理,取款机管理,用户查询等功能:
//*管理模块:存款、取款、开户、销户、修改信息、办卡、挂失卡;
//*用户查询模块;
//*取款机信息管理模块:管理员管理查询和维护、客户查询和取款等功能;
//可以考虑利率
#include <iostream>
using namespace std;
#include <string>
#include <fstream>
#include <time.h>
#include <vector>
#define MAX 20
class Person
{
public:
string cardNum;//卡号
string cardName;//用户名
double money;//余额
string beginTime;//开户日期
bool useState=false;//是否挂失
/*******用户的功能***********/
//查询我当前用户的账户余额
double SelectMoney()
{
return money;
}
//选择挂失和解锁卡
bool ChooseUseState(bool f)
{
useState = f;
return useState;
}
//取钱
double GetMoney(double m)
{
if (m>money) {
cout<<"您的余额不足!"<<endl;
}
return money -= m;
}
//存钱
double AddMoney(double m)
{
return money += m;
}
//构造函数
Person(string cardnum,string cardname,double money,string begintime,bool usestate)
{
this->cardNum = cardnum;
this->cardName = cardname;
this->money = money;
this->beginTime = begintime;
this->useState = usestate;
}
//默认构造函数
Person(){};
//运算符重载
// Person&person = (const Person &other)
// {
//
// }
};
int total=0;//记录总数
Person person[MAX];//定义一个person数组
double price=0.1;//默认汇率
/*******************函数申明******************************************/
void set_psw();//设置密码
int psw_check();//密码验证
void Show_menu();//显示菜单
int get_managermenu_choice();//接受管理员菜单选择
void PrintPersonTitle();//打印头信息
char* GetTime();//获取系统当前时间
void Show_Iden_menu();//身份选择菜单
int get_Idemenu_choice();//接受身份菜单选择
void inputInfile(Person person[],int n);//将类数组写入文件
void Show_PersonMenu();//显示普通用户功能菜单
void Show_Managermenu();//显示管理员功能菜单
int get_personmenu_choice();//普通用户接受功能菜单
int findPerson(Person *person,int n,string findName);//查找名字返回序列号
bool ISManager(string &name,string &pwd);//验证管理员身份
bool ISPerson(string &name,string &pwd);//验证用户信息
/**********************************************************************/
//查找名字返回序列号
int findPerson(Person *person,int n,string findName)
{
int i;
int m=-1;
for (i=0; i<n; i++) {
if (person[i].cardName == findName) {
m=i;
break;
}
}
return m;//返回person的下标
}
//将类数组写入文件,数组本身就是地址传递
void inputInfile(Person person[],int &n)
{
ofstream onfile;//写入文件类
onfile.open("Person.txt");
for (int i=0; i<n; i++) {
onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;
}
onfile.close();
}
//管理员共有继承自普通人
class Manager:public Person
{
public:
//开户
void addPerson(Person person[],int &n)
{
char f='y';
string sTemp;
char *t=GetTime();
ofstream onfile;//写入文件
onfile.open("person.txt");
do {
cout<<"输入卡号:";
cin>>sTemp;
onfile<<sTemp<<" ";
person[n].cardNum = sTemp;
cout<<"请输入用户名:";
cin>>sTemp;
onfile<<sTemp;
onfile<<sTemp<<" ";
person[n].cardName = sTemp;
onfile<<0<<" ";//余额默认是0
person[n].money = 0;
sTemp = t;
onfile<<sTemp<<" ";//开户时间
person[n].beginTime = sTemp;
onfile<<0;//0代表没有挂失,正常使用
person[n].useState = false;
onfile<<"\n";
++n;
cout<<"还要继续开户吗?(y/n)";
cin>>f;
} while (f=='y');
}
//销户
void deletePerson(Person person[],int &n,string delname)
{
int i;
int j=0;
for (i = 0; i<n; i++) {
if (person[i].cardName == delname) {
for (j=i; j<n-1; j++) {
person[j].cardName = person[j+1].cardName;
person[j].cardNum = person[j+1].cardNum;
person[j].money = person[j+1].money;
person[j].beginTime = person[j+1].beginTime;
person[j].useState = person[j+1].useState;
}
n--;
i--;
}
}
//从写入文件
ofstream onfile;//写入文件类
onfile.open("Person.txt");
for (int i=0; i<n; i++) {
onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;
}
onfile.close();
}
//修改卡的信息
void alterPerson(string name,Person person[],int &n)
{
int i=findPerson(person, total, name);
if(i<0)
{
cout<<"对不起,没有该账户!"<<endl;
}
else
{
double _money;
string sTemp;
int jj;
cout<<"从新修改账户信息:"<<endl;
cout<<"修改账户号:";
cin>>sTemp;
person[i].cardNum = sTemp;
cout<<"修改账户名:";
cin>>sTemp;
person[i].cardName = sTemp;
cout<<"修改账户余额:";
cin>>_money;
person[i].money = _money;
cout<<"修改挂失/解锁(1.挂失 2.解锁)";
cin>>jj;
if (jj==1) {
person[i].useState = true;
}
else
{
person[i].useState = false;
}
}
//将信息重写入文档
ofstream onfile;//写入文件类
onfile.open("Person.txt");
for (int i=0; i<n; i++) {
onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;
}
onfile.close();
}
//选择某用户卡的挂失和解锁
void chooseUseFunction(string name,Person person[],int &n)
{
int i=findPerson(person, total, name);
if(i<0)
{
cout<<"对不起,没有该账户!"<<endl;
}
else
{
int jj;
cout<<"修改挂失/解锁(1.挂失 2.解锁)";
cin>>jj;
if (jj==1) {
person[i].useState = true;
}
else
{
person[i].useState = false;
}
}
//将信息重写入文档
ofstream onfile;//写入文件类
onfile.open("Person.txt");
for (int i=0; i<n; i++) {
onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;
}
onfile.close();
}
//用户查询(查询所有的卡信息)
void showAllCard(Person person[],int &n)
{
cout<<"当前有"<<n<<"条记录:"<<endl;
PrintPersonTitle();
for (int i=0; i<n; i++) {
cout<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<endl;
}
}
};
/*********************************************************************/
void IdMenu(Manager &manager);//身份菜单响应
void managermenu(Manager &manager);//管理员菜单相应
void personmenu();//用户菜单
/********************函数定义*****************************************/
//获取当前系统时间
char* GetTime()
{
{
time_t now;
struct tm *timenow;
time(&now);
timenow = localtime(&now);
char *p = asctime(timenow);
return p;
}
}
//身份菜单响应
void IdMenu(Manager &manager)
{
Show_Iden_menu();//菜单显示
switch (get_Idemenu_choice())
{
case 1:
{
//进入管理员身份验证
string n,s;
cout<<"请输入管理员账号:";
cin>>n;
cout<<"请输入管理员密码:";
cin>>s;
if (ISManager(n, s)) {
managermenu(manager);
}
else
{
cout<<"验证错误"<<endl;
}
}
break;
case 2:
//进入客户身份验证
{
string n,s;
cout<<"请输入账户名:";
cin>>n;
cout<<"请输入账户密码:";
cin>>s;
// if (ISManager(n, s)) {
// managermenu(manager);
// }
if (ISPerson(n,s)) {
cout<<"验证用户成功"<<endl;
}
else{
cout<<"验证用户失败";
}
}
break;
default:
cout<<"选择错误"<<endl;
break;
}
}
//验证客户信息
bool ISPerson(string &name,string &pwd)
{
int i=0;
string password="dingxiaowei";
for (i=0; i<total; i++) {
if(person[i].cardName == name&&password==pwd);
{
return true;
break;
}
}
if (i==total) {
return false;
}
}
//验证管理员身份
bool ISManager(string &name,string &pwd)
{
string n,p;
ifstream infile;//读取文件类
infile.open("manager.txt");
if(infile.is_open())
{
infile>>n>>p;
}
else
{
cout<<"打开失败!";
}
if (n==name&&p==pwd)
{
return true;
}
else
{
return false;
}
}
//管理员菜单相应
void managermenu(Manager &manager)
{
bool flag = false;
do
{
Show_Managermenu();//显示菜单
switch (get_managermenu_choice()) {
case 1://增加记录
manager.addPerson(person, total);
break;
case 2://删除记录
{
cout<<"请输入您要销户的名字:";
string name;
cin>>name;
manager.deletePerson(person, total, name);
}
break;
case 3://查询记录
{
cout<<"请输入您要修改的账户名:";
string name;
cin>>name;
manager.alterPerson(name, person, total);
}
break;
case 4://修改记录
{
cout<<"请输入您修改挂失或解锁的账户名:";
string name;
cin>>name;
manager.chooseUseFunction(name, person, total);
}
break;
case 5://查询所有记录
manager.showAllCard(person, total);
break;
case 0:
flag = true;
IdMenu(manager);//返回上一级
break;
default:
printf("*************************\n");
printf(" 欢迎再次使用本系统,谢谢 \n");
printf("*************************\n");
break;
}
}while (flag==false);
}
//打印个体用户头信息
void PrintPersonTitle()
{
cout<<"--------------------------------------------------------\n";
cout<<" 卡号 用户名 余额 开户日期 是否挂失 \n";
cout<<"--------------------------------------------------------\n";
}
//设置密码
void set_psw()
{
ofstream onfile;//写入文件类
string psw_set ,psw_check;
do
{
cout<<"You must set password first!\n";
cin>>psw_set;
cout<<"conform password:";
cin>>psw_check;
if(psw_check == psw_check)
{
cout<<"set password success!\n";
}
else
{
cout<<"error!\n";
}
}
while(psw_check != psw_set);
onfile.open("password.txt",ios::out);
onfile<<psw_set;
onfile.close();
}
//密码验证
int psw_check()
{
ifstream infile;//读取文件类
ofstream onfile;//文件写入类
unsigned int j=1;
string pword;
string password;
infile.open("password.txt",ios::in);
if (!infile.is_open())//如果打开失败,则重新设置密码
{
set_psw();//重新设置密码
}
//取值
infile>>password;
//打开成功验证密码
do {
cout<<"输入密码,你将有三次机会:"<<j<<"/3次机会"<<endl;
cin>>pword;
j++;
} while (password != pword && j<=3);
if (j<=3) {
cout<<"恭喜登陆成功!"<<endl;
return 1;//打开成功
}
else
{
cout<<"你已经输入了三次了,打开文件失败!"<<endl;
return 0;
}
}
//身份选择菜单
void Show_Iden_menu()
{
cout<<">>>>>>>>>>>>>>>>>欢迎您使用银行管理系统<<<<<<<<<<<<<<<<<<<<\n";
cout<<"*******************************************************\n";
cout<<" 1.银行管理员 | 2.普通用户 \n";
cout<<"*******************************************************\n";
}
//显示管理员菜单
void Show_Managermenu()
{
cout<<">>>>>>>>>>>>>>>欢迎您使用银行管理员管理系统<<<<<<<<<<<<<<<<\n";
cout<<"******************************************************\n";
cout<<" 1.开户 | 2.销户 \n";
cout<<" 3.修改卡号信息 | 4.挂失/解锁 \n";
cout<<" 5.查询所有记录 | 0.返回上级 \n";
cout<<"******************************************************\n";
}
//显示普通用户功能菜单
void Show_PersonMenu()
{
cout<<">>>>>>>>>>>>>>欢迎您使用银行客户管理系统<<<<<<<<<<<<<<<<<<<<\n";
cout<<"******************************************************\n";
cout<<" 1.查询余额 | 2.挂失/解锁 \n";
cout<<" 3.存款 | 4.取款 \n";
cout<<" 0.返回上级 | \n";
cout<<"******************************************************\n";
}
//普通用户接受菜单
int get_personmenu_choice()
{
int personmenu_ch;//菜单选项
do {
cout<<"请选择功能:";
cin>>personmenu_ch;
if (personmenu_ch<0||personmenu_ch>4) {
cout<<"输入有误!"<<endl;
}
} while (personmenu_ch<0||personmenu_ch>4);
return personmenu_ch;
}
//接受身份菜单选择
int get_Idemenu_choice()
{
int idmenu_ch;//菜单选项
do {
cout<<"请选择身份:";
cin>>idmenu_ch;
if (idmenu_ch<1||idmenu_ch>2) {
cout<<"输入有误!"<<endl;
}
} while (idmenu_ch<1||idmenu_ch>2);
return idmenu_ch;
}
//接受菜单选择
int get_managermenu_choice()
{
int menu_ch;//菜单选项
do {
cout<<"请选择菜单:";
cin>>menu_ch;
if (menu_ch<0||menu_ch>5) {
cout<<"error";
}
} while (menu_ch<0||menu_ch>5);
return menu_ch;
}
int main(int argc, const char * argv[])
{
Manager manager;
if (psw_check()) {
IdMenu(manager);
}
return 0;
}






银行管理系统[C++]的更多相关文章
- c++ 银行管理系统及报告
1.题目描写叙述: 本代码为银行管理系统,总体分为管理员模式和普通用户模式: (1)在管理员模式中能完毕 ①用户信息录入 ②改动管理员password ③改动指定账户信息 ④信息管理业务 (2)在普通 ...
- python 银行管理系统
这是一个使用python连接mysql的例子 涉及到类的使用 import pymysql import function as f def mysql(): db=pymysql.connect(h ...
- Bank Simulation Program银行管理系统C++ :)
设计并实现简单的银行存取款系统,系统主界面包括登录和注册两个选项,选择登录,提示用户输入银行帐号和密码,验证通过后进入主界面,主界面包括:存款.取款.查询余额.历史记录.修改密码等功能.注册功能让用户 ...
- python连接mysql数据库实例demo(银行管理系统数据库版)
主函数: import adminView import os import pickle from bankFunction import BankFunction import time def ...
- java实现银行管理系统
Bank类 package First; import java.util.TreeSet; //银行类public class Bank { private String Bankna ...
- JavaSwing开发简单的银行管理系统 附源码
开发环境: Windows操作系统开发工具: MyEclipse/Eclipse+Jdk+mysql数据库 运行效果图:
- 我的Java语言学习日志1_"简单的银行管理系统实现"
设计步骤:注意:本篇代码,直接建两个类( Bank_Account.BankManage)在BankManage往里面填方法就行.是为了让和我一样自学朋友可以更快的接受.但是代码优化的空间还是很大的( ...
- 基于Java的简单银行管理系统(MVC设计模式)
项目导航 功能展示 项目描述 项目结构 `data` `service` `utils` `view ` 欠缺与总结 源码下载 功能展示 本系统基于命令台窗口,暂未与图形页面结合.话不多说,先上效果图 ...
- 银行bank系统项目实践
想看项目的注意了!完整版银行管理系统就在这里看不看你看着办! 按照惯例咱们还是先来看一下项目需求: 某银行为了提高业务率希望开发一个银行管理系统功能如下: 1.能够完成用户开户操作 2.能够完成用户取 ...
随机推荐
- vim python设置
http://www.cnblogs.com/Leo-Forest/archive/2012/04/06/2435237.html http://linux-wiki.cn/wiki/zh-hans/ ...
- Appium+Robotframework实现Android应用的自动化测试-5:RIDE中AppiumLibrary的配置
可能很多朋友已经迫不及待的想要用RobotFramework+AppiumLibrary来写Android App的测试脚本了,那我们也废话少说,直接开始. 首先打开RIDE,这是编写RobotFra ...
- VS2010工程文件减肥
由于VS2010中新增加了sdf和ipch文件等浏览数据库来支持智能浏览感知编辑.显示类视图等,使得随便一个小工程就上百兆,很占用空间也不方便工程项目的打包备份.为了不使用数据库以减小VS2010中的 ...
- 16. javacript高级程序设计-HTML5脚本编程
1. HTML5脚本编程 l 跨文档消息传递API能够让我们在不降低同源策略安全性的前提下,在来至不同的域的文档间传递消息 l 原生拖放功能可以方便的指定某个元素是否可以拖动,并在放置时做出响应.还可 ...
- oracle触发器加条件判断、dblink
--新增基站同步给电池组信息 create or replace trigger a_b_test after insert or update or delete on BJLT.BASESTATI ...
- 【leetcode】Search in Rotated Sorted Array (hard)
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- python学习 登陆验证
#!/usr/bin/env python #-*- coding=utf-8 -*- #----------------导入模块------------------------------ impo ...
- VS VA助手补丁覆盖目录
以VS2010为例. VA_X.dll 复制到以下文件夹内,覆盖原文件. WinXP系统: %USERPROFILE%\Local Settings\Application Data\Microsof ...
- 解决Eclipse里Maven工程报 An error occurred while filtering resources错误
这几天被maven的单元测试折腾死了,以为是自己的eclipse有问题呢,今天早上来了又发现eclipse报了一个很奇怪的错误:An error occurred while filtering re ...
- 导出 SQL SERVER 表中数据为脚本
ALTER PROCEDURE [dbo].[Usp_OutputData] @tablename sysname, @outputIdentitycolumn int AS declare @col ...