C++语言基础 例程 应用系统开发:银行储蓄系统
来源:互联网 发布:三菱触摸屏软件 编辑:程序博客网 时间:2024/05/21 17:38
贺老师的教学链接 本课讲解
说明:
(1)下面的代码,只演示了利用链表作为存储结构的可选处理方法,本讲提到的其他方面的拓展,请感兴趣做下去的同学自行使用相关技术组合起来,形成一个完整的系统。
(2)运行程序,登录用户名和密码,请阅读程序,从程序中找出。建议建立多文件项目,将代码拷贝到IDE中看。
(3)本程序由我的2011级学生刘镇参加企业组织的实训中完成,原文在:点击打开链接
Record.h
#ifndef HEADER_RECORD //条件编译#define HEADER_RECORD#include <string>using namespace std;class Record{private: int number; string userName; string passWord; double balance; int flag;public: Record(); void set_number(int number); void set_userName(string userName); void set_passWord(string passWord); void set_balance(double balance); void set_flag(int flag); int get_number(); string get_userName(); string get_passWord(); double get_balance(); int get_flag(); void display_Record();};#endif
Record.cpp
#include "Record.h"#include <iostream>using namespace std;Record::Record(){ this->number = 0; this->userName = ""; this->passWord = ""; this->balance = 0; this->flag = -1;}void Record::set_number(int number){ this->number = number;}void Record::set_userName(string userName){ this->userName = userName;}void Record::set_passWord(string passWord){ this->passWord = passWord;}void Record::set_balance(double balance){ this->balance = balance;}void Record::set_flag(int flag){ this->flag = flag;}int Record::get_number(){ return this->number;}string Record::get_userName(){ return this->userName;}string Record::get_passWord(){ return this->passWord;}double Record::get_balance(){ return this->balance;}int Record::get_flag(){ return this->flag;}void Record::display_Record() //用于显示打印信息{ cout << "打印用户信息中..." << endl; cout << "+---------------------------------------+" << endl; cout << "|" << "账号" << '\t' << "|" << "户名" << '\t' << "|" << "密码" << '\t' << "|" << "余额" << '\t' << "|" << "状态" << '\t' << "|"<< endl; cout << "|----------------------------------------" << endl; cout << "|" << this->number << '\t' << "|" << this->userName << '\t' << "|" << this->passWord << '\t' << "|" << this->balance << '\t' << "|" ; if(this->flag == 1) { cout << "正常"; } else { cout << "销户"; } cout << '\t' << "|" << endl; cout << "|---------------------------------------+" << endl;}
Node.h
#ifndef HEADER_NODE#define HEADER_NODE#include "Record.h"using namespace std;class Node{private: Record * record; Node * next;public: Node(); ~Node(); void set_record(Record * record); void set_next(Node * next); Record * get_record(); Node * get_next(); void display_Node();};#endif
Node.cpp
#include "Node.h"#include <iostream>using namespace std;Node::Node(){ this->record = NULL; this->next = NULL;}Node::~Node(){ delete this->record; this->record = NULL; this->next = NULL;}void Node::set_record(Record * record){ this->record = record;}void Node::set_next(Node * next){ this->next = next;}Record * Node::get_record(){ return this->record;}Node * Node::get_next(){ return this->next;}void Node::display_Node(){ cout << "打印用户信息中..." << endl; if(this->record != NULL) //当出现空链表时执行 { Record * r = this->record; r->display_Record(); } else { cout << "记录为空..." << endl; } cout << "Next * : " << this->next << endl; cout << "结点结束..." << endl;}
LinkList.h
#ifndef HEADER_LINKLIST#define HEADER_LINKLIST#include "Node.h"using namespace std;class Linklist{private: Node * head; int len;public: Linklist(); ~Linklist(); void set_head(Node * head); void set_len(int len); Node * get_head(); int get_len(); Node * make_node(Record * record); void insert_node(Node * node); Node * find_node(int number); void display_Linklist();};#endif
LinkList.cpp
#include "Linklist.h"#include <iostream>using namespace std;Linklist::Linklist(){ this->head = NULL; this->len = 0;}Linklist::~Linklist(){ Node * p, * q; p = this->head; while(p != NULL) { q = p; p = p->get_next(); delete q; } this->head = NULL; this->len = 0;}void Linklist::set_head(Node * head){ this->head = head;}void Linklist::set_len(int len){ this->len = len;}Node * Linklist::get_head(){ return this->head;}int Linklist::get_len(){ return this->len;}Node * Linklist::make_node(Record * record){ Node * node = new Node(); node->set_record(record); node->set_next(NULL); return node;}void Linklist::insert_node(Node * node){ Node * p = this->head; if(p == NULL) { this->head = node; this->len++; return; } while(p->get_next() != NULL) { p = p->get_next(); } p->set_next(node); this->len++; return;}Node * Linklist::find_node(int number){ Node * p = this->head; while(p != NULL) { Record * r = p->get_record(); if(r->get_number() == number) { return p; //返回找到的结点 } else { p = p->get_next(); } } return p; //return NULL;}void Linklist::display_Linklist(){ cout << "打印用户信息中..." << endl; Node * p = this->head; if(p == NULL) { cout << "链表为空..." << endl; cout << "链长: " << this->len << endl; cout << "记录结束..." << endl; return; } while(p != NULL) { p->display_Node(); p = p->get_next(); } cout << "链长: " << this->len << endl; cout << "链表结束..." << endl;}
Bank.h
#ifndef HEADER_BANK#define HEADER_BANK#include "Linklist.h"using namespace std;class Bank{private: Linklist * list; int account_number;public: Bank(); ~Bank(); void set_list(Linklist * list); Linklist * get_list(); Linklist * make_linklist(); Record * make_record(string username, string password, double balance); int creat_number(); int get_number(); string get_userName(); string get_passWord(); double get_balance(); Record * find_record(int account_number); void open_account(); void close_account(); void find_account(); void deposit(); void withdraw(); void transfer_account();};#endif
Bank.cpp
#include <conio.h>#include "Bank.h"#include <iostream>#include <cstdio>using namespace std;Bank::Bank(){ this->list = this->make_linklist(); this->account_number = 10000; //未开户}Bank::~Bank() //将调用所有类的析构函数{ delete this->list; this->list = NULL;}void Bank::set_list(Linklist *list){ this->list = list;}Linklist * Bank::get_list(){ return this->list;}Linklist * Bank::make_linklist(){ return new Linklist();}Record * Bank::make_record(string username, string password, double balance){ Record * r = new Record(); int number = this->creat_number(); r->set_number(number); r->set_passWord(password); r->set_userName(username); r->set_balance(balance); r->set_flag(1); return r;}int Bank::creat_number(){ return this->account_number = this->account_number + 1;}int Bank::get_number(){ int number; cout << "请输入账号..." << endl; cin >> number; cout << "账号: " << number << endl; return number;}string Bank::get_userName(){ string username; cout << "请输入户名..." << endl; cin >> username; cout << "户名: " << username << endl; return username;}string Bank::get_passWord(){ string password; cout << "请输入密码..." << endl; cin >> password; cout << "密码: " << password << endl; return password;}double Bank::get_balance(){ double balance; cout << "请输入金额..." << endl; cin >> balance; cout << "金额:" << balance << endl; return balance;}Record * Bank::find_record(int account_number){ Node * n = this->list->find_node(account_number); if(n != NULL) { return n->get_record(); } return NULL;}//开户功能:void Bank::open_account(){ // 获取用户输入的账户信息 string userName = this->get_userName(); string passWord = this->get_passWord(); double balance = this->get_balance(); // 使用输入数据创建Record对象 Record * r = this->make_record(userName, passWord, balance); // 创建Node结点,封装Record对象 Node * n = this->list->make_node(r); // 将Node结点插入到Linklist链表 this->list->insert_node(n); //显示账户信息 r->display_Record(); cout << "开户成功!按任意键退出..." << endl; getch(); return;}//销户功能:void Bank::close_account(){ // 获取销户账号 int Number = this->get_number(); // 查找账户 Record * back_record = this->find_record(Number); if(back_record == NULL) { cout << "查无此帐户!按任意键退出..." << endl; getchar(); return; } //获取账户密码,判断密码是否正确 string passWord = this->get_passWord(); if(passWord != back_record->get_passWord()) { cout << "密码不正确!按任意键退出..." << endl; getchar(); return; } //判断账户状态 if(back_record->get_flag() == 0) { cout << "该帐户已经销户,不能再次销户!" << endl; getchar(); return; } //获取用户输入的选择信息,确认是否销户 string userAnswer; cout << "确认销户? [1:销户| 其他:不销户] " << endl; cin >> userAnswer; //销户 if(userAnswer == "1") { back_record->set_flag(0); back_record->set_balance(0); back_record->display_Record(); cout << "销户成功!按任意键退出..." << endl; getchar(); return; } cout << "销户用户取消销户!" << endl; return;}//查询功能:void Bank::find_account(){ // 获取查询账号 int Number = this->get_number(); // 查找账户 Record * back_record = this->find_record(Number); if(back_record == NULL) { cout << "查无此帐户!按任意键退出..." << endl; getch(); return; } //获取账户密码,判断密码是否正确 string passWord = this->get_passWord(); if(passWord != back_record->get_passWord()) { cout << "密码不正确!按任意键退出..." << endl; getch(); return; } //显示查询到的用户信息 back_record->display_Record(); cout << "查询成功!按任意键退出..." << endl; getch(); return;}//存款功能:void Bank::deposit(){ //获取存款账号 int Number = this->get_number(); //查找账号 Record * back_record = this->find_record(Number); //判断用户是否存在 if(back_record == NULL) { cout << "查无此帐户!按任意键退出..." << endl; getch(); return; } //显示账户信息 back_record->display_Record(); //判断账户是否销户 if(back_record->get_flag() == 0) { cout << "该帐户已经销户!按任意键退出..." << endl; getch(); return; } double cash = 0; cout << "输入存款金额: " << endl; cin >> cash; cout << "存款金额为:" << cash << endl; cash = back_record->get_balance() + cash; back_record->set_balance(cash); //显示账户信息 back_record->display_Record(); cout << "存款结束! 按任意键退出..." << endl; getch(); return;}//取款功能:void Bank::withdraw(){ // 获取取款账号 int Number = this->get_number(); // 查找账户 Record * back_record = this->find_record(Number); if(back_record == NULL) { cout << "查无此帐户!按任意键退出..." << endl; getch(); return; } //获取账户密码,判断密码是否正确 string passWord = this->get_passWord(); if(passWord != back_record->get_passWord()) { cout << "密码不正确!按任意键退出..." << endl; getch(); return; } // 确定用户账户状态 if(back_record->get_flag() == 0) { cout << "该帐户已经销户!按任意键退出..." << endl; getch(); return; } double cash = 0; cout << "请输入取款金额:" << endl; cin >> cash; if(cash > back_record->get_balance()) { cout << "账户余额不足!按任意键退出..." << endl; getch(); return; } cash = back_record->get_balance() - cash; back_record->set_balance(cash); //显示账户信息 back_record->display_Record(); cout << "取款结束! 按任意键退出..." << endl; getch(); return;}//转账功能:void Bank::transfer_account(){ // 获取转入账号 int number; cout << "请输入转出账号:" << endl; cin >> number; // 查找账号 Record * back_record = this->find_record(number); if(back_record == NULL) { cout << "查无此帐户!按任意键退出..." << endl; getch(); return; } //获取账户密码,判断密码是否正确 string passWord; cout << "请输入账户密码:" << endl; cin >> passWord; if(passWord != back_record->get_passWord()) { cout << "密码不正确!按任意键退出..." << endl; getch(); return; } // 确定用户账户状态 if(back_record->get_flag() == 0) { cout << "该帐户已经销户!按任意键退出..." << endl; getch(); return; } //获取转账账号 int transfer_number; cout << "请输入转入账号:" << endl; cin >> transfer_number; //查找转账账户 Record * transfer_record = this->find_record(transfer_number); if(back_record == NULL) { cout << "查无此帐户!按任意键退出..." << endl; getch(); return; } // 确定用户账户状态 if(back_record->get_flag() == 0) { cout << "该帐户已经销户!按任意键退出..." << endl; getch(); return; } //获取转账金额 double cash = 0; cout << "请输入转入金额:" << endl; cin >> cash; //判断转账金额是否合法 if(cash > back_record->get_balance()) { cout << "账户余额不足!按任意键退出..." << endl; getch(); return; } //资金转账 transfer_record->set_balance(transfer_record->get_balance() + cash); back_record->set_balance(back_record->get_balance() - cash); //显示当前帐户信息及转账账户信息 cout << "转出帐户信息:" << endl; back_record->display_Record(); cout << "转入账户信息:" << endl; transfer_record->display_Record(); //转账结束 cout << "转账结束! 按任意键退出..." << endl; getch(); return;}
Main.cpp
#include "Bank.h"#include <iostream>#include <cstdlib>using namespace std;void welcome();void login(Bank * bank);void mainmenu(Bank * bank);int main(){ Bank * bank = new Bank(); welcome(); login(bank); return 0;}void welcome(){ cout << "+--------------------------------------+" << endl; cout << "| |" << endl; cout << "| 欢迎使用储蓄综合业务平台 |" << endl; cout << "| |" << endl; cout << "+--------------------------------------+" << endl;}void mainmenu(Bank * bank){ int choice = -1; do { cout << endl; cout << "+---------------------------------+" << endl; cout << "| 开户请按1 取款请按5 |" << endl; cout << "| 销户请按2 转账请按6 |" << endl; cout << "| 查询请按3 退出请按0 |" << endl; cout << "| 存款请按4 |" << endl; cout << "+---------------------------------+" << endl; cout << "请输入您的选择: " << endl; cin >> choice; switch(choice) { case 0: exit(0); case 1: bank->open_account(); break; case 2: bank->close_account(); break; case 3: bank->find_account(); break; case 4: bank->deposit(); break; case 5: bank->withdraw(); break; case 6: bank->transfer_account(); break; default: cout << "无效选项!" << endl; break; } } while(true);}void login(Bank * bank){ string admin_userName; string admin_passWord; for(int i = 1; i <= 3; ++i) { cout << endl; cout << "请输入您用的用户名: " << endl; cin >> admin_userName; cout << "请输入您的密码: " << endl; cin >> admin_passWord; if((admin_userName == "admin") && (admin_passWord == "admin")) { mainmenu(bank); } else { if(i < 2) { cout << "用户名或密码输入错误,请重新输入!" << endl; } else { cout << "连续输错用户名或密码,退出系统!" << endl; } } }}
0 0
- C++语言基础 例程 应用系统开发:银行储蓄系统
- C++语言基础 例程 应用系统开发:银行储蓄系统
- C语言及程序设计进阶例程-21 银行储蓄系统(第五版)开发
- C语言及程序设计进阶例程-39 银行储蓄系统(第六版)开发
- C语言:银行储蓄系统的开发(初级)
- C语言:银行储蓄系统开发(中级)
- C语言综合实践-----银行储蓄系统
- C语言项目—银行储蓄系统
- C语言初步-第47讲: 小小型应用系统开发指导(模拟银行储蓄系统的基本功能)
- C语言提高-第15讲: 小小型应用系统开发指导(函数版银行储蓄系统)
- C语言提高-40讲: 小小型应用系统开发指导(四)(银行储蓄系统数组版)
- 《C++语言基础》实践项目——银行储蓄系统开发
- C语言——BANK银行储蓄系统
- C语言进阶-第39讲:银行储蓄系统(二进制版)开发
- 银行储蓄系统
- 银行储蓄系统
- 银行储蓄系统指导
- 银行储蓄系统...
- JVM的内存区域划分
- 一步一步 实现智能指针(一)
- 习题3-46
- hadoop2.2.0 pom.xml
- 深入理解Java内存模型(一)——基础
- C++语言基础 例程 应用系统开发:银行储蓄系统
- JAVA基础之RandomAccessFile总结
- C++语言基础 例程 异常处理的任务
- C++语言基础 例程 命名空间要解决的问题
- C++语言基础 例程 命名空间的使用
- C++语言基础 例程 异常处理的方法
- C++语言基础 例程 STL简介
- C++语言基础 例程 范型编程简介
- IOS调试lldb命令