银行储蓄系统c++版实训项目报告.doc
实训项目报告书项目名称: 银行综合业务储蓄平台 c+版年级班级: 项目完成人: 实训时间: 2012年 7月 5日至 2012 年7 月 9 日填 表 说 明一、本表由项目完成人填写,一式一份;二、实训结束前将填好的文稿打印后交实训指导教师进行鉴定和评定成绩,确认后的文档交院校存档保存;三、此表电子文档及学生项目实训的作品须打包存档,压缩文件包以学生学号命名,以班为单位收集,刻录光盘交院校存档;实训项目名称银行综合业务储蓄平台 c+版项目组成员及其分工姓名分工情况承担的主要工作一 需求分析登陆退出开户 销户 查询 存款 取款 转账二 概要设计BankLinkList * listvoid openAccount();void closeAccount();void deposit();void withdraw();void findAccount();void transAccount();LinkListNode * headRecordint number;string userName;string passWord;double balance;int flag;nodeRecord *record;Node *next;三 详细设计LinkList();LinkList();void setHead(Node * head);Node * getHead();Node *makeNode(Record * record);void insertNode(Node * node);Node * findNode(int number);void display(); Node * head;LinkList NodeRecordRecord *record; Node *next;int number;string userName;string passWord;double balance;int flag;Node();Node();void setRecord(Record *record);void setNext(Node *next);Record * getRecord();Node * getNext();void display();Record();void setNumber(int number);void setUserName(string userName);void setPassWord(string passWord);void setBalance(double balance);void setFlag(int flag);int getNumber();string getUserName();string getPassWord();double getBlance();int getFlag();void display();BankLinkList * list;int accoutNumber;Bank();Bank();void setList(LinkList * list);LinkList * getList();int getAccountNumber();LinkList * makeLinkList();Record*makeRecord(string userNumber, string passWord, double balance);int creatAccountNumber();int getNumber();string getUserName();string getPassWord();double getBalance();Record * findRecord(int accountNumber);void openAccount();void closeAccount();void deposit();void withdraw();void findAccount();void transAccount();P=headP!=NULL Head=Nodep->Next=NULLp->next=nodeP=p->nextendstart四 编码实现Record:Record()this->number = 0;this->userName = " "this->passWord = " "this->balance = 0.0;this->flag = -1;void Record:setNumber(int number)this->number = number;void Record:setUserName(string userName)this->userName = userName;void Record:setPassWord(string passWord)this->passWord = passWord;void Record:setBalance(double blance)this->balance = blance;void Record:setFlag(int flag)this->flag = flag;int Record:getNumber()return this->number;string Record:getUserName() return this->userName;string Record:getPassWord()return this->passWord;double Record:getBlance()return this->balance;int Record:getFlag()return this->flag;void Record:display()cout<<"Print Record elements."<<endl;cout<<"Number:"<<this->number<<endl; cout<<"UserName:"<<this->userName<<endl;cout<<"PassWord:"<<this->passWord<<endl;cout<<"Blalance:"<<this->balance<<endl;cout<<"Flag:"<<this->flag<<endl;cout<<"End of record."<<endl;Record.h#ifndef HEADER_RECORD#define HEADER_RECORD#include <string>using namespace std;class Recordprivate:int number;string userName;string passWord;double balance;int flag;public:Record();void setNumber(int number);void setUserName(string userName);void setPassWord(string passWord);void setBalance(double balance);void setFlag(int flag);int getNumber();string getUserName();string getPassWord();double getBlance();int getFlag();void display();#endifRecord.cpp#include"Record.h"#include<iostream>using namespace std;Record:Record()this->number = 0;this->userName = " "this->passWord = " "this->balance = 0.0;this->flag = -1;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:setRecord(Record *record)this->record = record;void Node:setNext(Node *next)this->next = next;Node * Node:getNext()return this->next;Record * Node:getRecord()return this->record;void Node:display()cout<<"Print Node Elements."<<endl;/cout<<"Record"<<this->record<<endl;if (this->record = NULL)cout<<"the elements of record is NULL"<<endl;elsethis->record->display(); /输出this->record对象指针所指向cout<<"Next:"<<this->next<<endl;cout<<"End of Node."<<endl;Node.h#ifndef HEADER_NODE#define HEADER_NODE#include "Record.h"class Nodeprivate:Record *record;Node *next;public:Node();Node();void setRecord(Record *record);void setNext(Node *next); Record * getRecord();Node * getNext();void display();#endifNode * LinkList:getHead()return this->head;Node * LinkList:makeNode(Record * record)Node * node = new Node();node->setRecord(record);node->setNext(NULL);return node;void LinkList:insertNode(Node *node)Node * p = this->head; /p指向头结点if (p = NULL) /判断头结点是否为空,如果为空,node即为头节点this->head = node;else /否则链表不为空while (p->getNext() != NULL) /p指向链表中最后一个节点p = p->getNext();p->setNext(node); /将node链接到最后一个节点后面Node * LinkList:findNode(int number)Node * p = this->head;while (p != NULL)if (p->getRecord()->getNumber() = number)return p;elsep = p->getNext();return p;void LinkList:display()Node * p = this->head;LinkList.h#ifndef HEADER_LINKLIST#define HEADER_LINKLIST#include "Node.h"class LinkListprivate: Node * head;public:LinkList();LinkList();void setHead(Node * head);Node * getHead();Node *makeNode(Record * record); /根据账户指针record创建链表节点void insertNode(Node * node); /将node指针指向的节点插入到链表Node * findNode(int number); /根据账号在链表中查找节点void display(); /显示链表; #endif LinkList.cpp#include"LinkList.h"#include<iostream>using namespace std;LinkList:LinkList()this->head = NULL;LinkList:LinkList()Node * p, * q;p = this->head;while (p != NULL)q = p->getNext();delete p;p = q;this->head = NULL; void LinkList:setHead(Node * head)this->head = head; Bank.cpp#include "Bank.h"#include<iostream>using namespace std;Bank:Bank()this->list = this->makeLinkList();this->accoutNumber = 10000;Bank:Bank()delete this->list;this->list = NULL;void Bank:setList(LinkList * list)this->list = list;LinkList * Bank:getList()return this->list;int Bank:getAccountNumber()return this->accoutNumber;LinkList * Bank:makeLinkList()LinkList * list = new LinkList();return list;Record * Bank:makeRecord(string userName, string passWord, double balance)Record * record = new Record();int number = this->creatAccountNumber();record->setNumber(number);record->setUserName(userName);record->setPassWord(passWord);record->setBalance(balance);record->setFlag(1);return record;int Bank:creatAccountNumber()this->accoutNumber = this->accoutNumber +1;return this->accoutNumber;cout<<"Print LinkList elements."<<endl;if (p = NULL)cout<<"This LinkList is NULL."<<endl;elsewhile (p != NULL)p->display();p = p->getNext();cout<<"End of LinkList."<<endl;cout<<endl;Bank.h#ifndef HEADER_BANK#define HEADER_BANK#include "LinkList.h"class Bankprivate:LinkList * list;int accoutNumber;public:Bank();Bank();void setList(LinkList * list);LinkList * getList();int getAccountNumber();LinkList * makeLinkList();Record * makeRecord(string userNumber, string passWord, double balance);int creatAccountNumber();int getNumber();string getUserName();string getPassWord();double getBalance();Record * findRecord(int accountNumber);void openAccount();void closeAccount();void deposit();void withdraw();void findAccount();void transAccount();#endifstring passWord = this->getPassWord();double balance = this->getBalance();Record * record = this->makeRecord(userName, passWord, balance);/显示账户信息record->display();/将账户插入到链表Node * node = this->list->makeNode(record);this->list->insertNode(node);/显示开户成功cout<<"Open an account Succeed."<<endl;Record * Bank:findRecord(int accountNumber)Node * node = this->list->findNode(accountNumber);if(node != NULL)return node->getRecord();elsereturn NULL;void Bank:closeAccount()/获取用户输入的销户账号int number = this->getNumber();/根据账号查找账户Record * record = this->findRecord(number);if(record != NULL)/获取用户输入密码string passWord = this->getPassWord();if(passWord = record->getPassWord()/判断账户状态if(record->getFlag() != 0)/修账户状态record->setFlag(0);int Bank:getNumber()int number;cout<<"Plase input number."<<endl;cin>>number;cout <<"Your Number:"<<number<<endl;return number;string Bank:getUserName()string userName = ""cout<<"Plase input userName."<<endl;cin>>userName;cout<<"Your userName"<<userName<<endl;return userName;string Bank:getPassWord()string passWord = ""cout<<"Plase input passWord."<<endl;cin>>passWord;cout<<"Your passWord"<<passWord<<endl;return passWord;double Bank:getBalance()double balance = 0.0;cout<<"Plase input balance."<<endl;cin>>balance;cout<<"Your balance"<<balance<<endl;return balance;void Bank:openAccount()/创建账户/生成账户/由用户输入用户名、密码、金额/由系统生成账号string userName = this->getUserName();elsecout<<"PassWord error."<<endl;elsecout<<"not found."<<endl;void Bank:withdraw()/获取用户输入取款账号int number = this->getNumber();/根据账号查找账户Record * record = this->findRecord(number);if(record != NULL)/获取用户输入密码string passWord = this->getPassWord();if(passWord = record->getPassWord()/判断账户状态if(record->getFlag() != 0)/修改账户金额double balance = this->getBalance();if(record->getBlance() >= balance)record->setBalance(record->getBlance() - balance);record->display();elsecout<<"not enough."<<endl;elsecout<<"the flag is 0."<<endl;record->display();elsecout<<"the flag is 0."<<endl;elsecout<<"PassWord error."<<endl;elsecout<<"not found."<<endl;void Bank:deposit()/获取用户输入存款账号int number = this->getNumber();/根据账号查找账户Record * record = this->findRecord(number);if(record != NULL)/获取用户输入密码string passWord = this->getPassWord();if(passWord = record->getPassWord()/判断账户状态if(record->getFlag() != 0)/修改账户金额double balance = this->getBalance();record->setBalance(record->getBlance() + balance);record->display();elsecout<<"the flag is 0."<<endl;Main.cpp#include "Bank.h"#include <iostream>using namespace std;void login(Bank * bank);void mainmenu(Bank * bank);void mainmenu(Bank * bank)int choice = -1;docout <<endl;cout <<"0 Exit."<<endl;cout <<"1 Open Account"<<endl;cout <<"2 Find Account"<<endl;cout <<"3 Close Account"<<endl;cout <<"4 Deposit"<<endl;cout <<"5 Withdraw"<<endl;getchar();cin >> choice;switch (choice)case 0:exit (0);case 1:bank->openAccount();break;case 2:bank->findAccount();break;case 3:bank->closeAccount();break;case 4:bank->deposit();break;case 5:bank->withdraw();break;default:cout <<"error." <<endl;while(true); void login(Bank * bank)string adminUserName;string adminPassWord;cout <<"Please input Admin UserName."<<endl;cin >>adminUserName;elsecout<<"PassWord error."<<endl;elsecout<<"not found."<<endl;void Bank:findAccount()/获取用户输入查询账号int number = this->getNumber();/根据账号查找账户Record * record = this->findRecord(number);if(record != NULL)/获取用户输入密码string passWord = this->getPassWord();if(passWord = record->getPassWord()/显示账户信息record->display();elsecout<<"PassWord error."<<endl;elsecout<<"not found."<<endl;测试代码TestRecord.cpp#include"Record.h"int main()Record *record;record = new Record();record->display();record->setNumber(10001);record->setUserName("jone");record->setPassWord("123456");record->setBalance(1000.00);record->setFlag(1);record->display();return 0;cout <<"Please input Admin PassWord."<<endl;cin >>adminPassWord;for(int i = 1;i <= 3;i +)if(adminUserName = "admin" && adminPassWord = "admin")mainmenu(bank);elseif (i < 2)cout <<"Please input Admin UserName."<<endl;cin >>adminUserName;cout <<"Please input Admin PassWord."<<endl;cin >>adminPassWord;continue;elsecout << "sorry" <<endl;break;int main()Bank * bank = new Bank();login(bank);retu